#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//int main()
//{
//	int a = 0;
//	int b = 5;
//	int c = a | b; // a和b有一个为真
//	printf("%d\n", c);
//
//	return 0;
//}

//int main()
//{
//	int a = 3;
//	int b = 5;
//
//	a = a ^ b;
//	b = a ^ b;
//	a = b ^ a;
//
//	printf("%d", a);
//	printf("%d", b);
//
//
//	return 0;
//}

//int main()
//{
//	int num = 1;
//	scanf("%d", &num);
//
//	int count = 0;
//
//	while (num != 0)
//	{
//		if (num % 2 == 1)
//			count++;
//		num /= 2;
//	}
//
//	printf("%d", count);
//	return 0;
//}

//int main()
//{
//	int num = 0;
//	int count = 0;
//
//	scanf("%d", &num);
//
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (num & 1 == 1)
//			count++;
//		num = num >> 1;
//	}
//
//	printf("%d", count);
//	return 0;
//}
//
//#include <stdio.h>
//int main()
//{
//	char a = -1;
//	signed char b = -1;
//	unsigned char c = -1;
//	printf("a=%d,b=%d,c=%d", a, b, c);
//	return 0;
//} //a=-1,b=-1,c=255


//#include <stdio.h>
//int main()
//{
//	char a = -128;
//	printf("%u\n", a);
//	return 0;
////}//4294967168
//
//int main()
//{
//	unsigned int i;
//	for (i = 9; i >= 0; i--)
//	{
//		printf("%u\n", i);
//	} //从9~0(9 8 7 6 5 4 3 2 1 0)
//      //然后从4294967168递减。
//
//	return 0;
//}
//
//int main()
//{
//	char a[1000];
//	int i;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//	}
//	printf("%d", strlen(a));
//	return 0;
//}//结果为255


//int main()
//{
//    char a = 0xb6;      // 定义一个char类型的变量a，并赋值为0xb6（十进制为182）
//    short b = 0xb600;   // 定义一个short类型的变量b，并赋值为0xb600（十进制为47040）
//    int c = 0xb600000;  // 定义一个int类型的变量c，并赋值为0xb600000（十进制为121634816）
//
//    if (a == 0xb6)       // 这里char类型的变量a与立即数0xb6比较
//        printf("a");    // 由于整型提升，0xb6被看作int类型，其值不变，且a也提升为int类型，
//                        //
//
//    if (b == 0xb600)     // 这里short类型的变量b与立即数0xb600比较
//        printf("b");    // 同样因为整型提升，0xb600被看作int类型，但是b在整型提升时可能保持其原始的位模式，
//                        //这可能导致一个正数的扩展成为负数，所以这里不会打印b
//
//    if (c == 0xb600000)  // 这里int类型的变量c与立即数0xb600000比较
//        printf("c");    // 由于c已经是int类型，不需要整型提升，比较结果为真，所以打印c
//
//    return 0;
//}

//统计二进制中1的个数
//输入一个整数，写一个函数返回该数32位二进制表示中1的个数，其中负数用补码表示。
//（ eg. 15    0000 1111    4个1 ）
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int i = 1;
//	int count = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if ((num >> i) & 1 == 1)
//			count++;
//	}
//	printf("%d", count);
//	return 0;
//}

//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int  count = 0;
//	while (num)
//	{
//		num = num & (num - 1);
//		count++;
//	}
//	printf("%d", count);
//	return 0;
//}

//求两个数二进制中不同位的个数
//int main()
//{
//    int m = 0;
//    int n = 0;
//    scanf("%d %d", &m, &n);
//
//    int count = 0;
//    int i = 0;
//    for (i = 0; i < 32; i++) {
//        if (((m >> i) & 1) != ((n >> i) & 1)) {
//            count++;
//        }
//    }
//    printf("%d\n", count);
//
//    return 0;
//}